home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / distutils / dir_util.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  155 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __revision__ = '$Id: dir_util.py 39416 2005-08-26 15:20:46Z tim_one $'
  5. import os
  6. import sys
  7. from types import *
  8. from distutils.errors import DistutilsFileError, DistutilsInternalError
  9. from distutils import log
  10. _path_created = { }
  11.  
  12. def mkpath(name, mode = 511, verbose = 0, dry_run = 0):
  13.     if not isinstance(name, StringTypes):
  14.         raise DistutilsInternalError, "mkpath: 'name' must be a string (got %r)" % (name,)
  15.     
  16.     name = os.path.normpath(name)
  17.     created_dirs = []
  18.     if os.path.isdir(name) or name == '':
  19.         return created_dirs
  20.     
  21.     if _path_created.get(os.path.abspath(name)):
  22.         return created_dirs
  23.     
  24.     (head, tail) = os.path.split(name)
  25.     tails = [
  26.         tail]
  27.     while head and tail and not os.path.isdir(head):
  28.         (head, tail) = os.path.split(head)
  29.         tails.insert(0, tail)
  30.     for d in tails:
  31.         head = os.path.join(head, d)
  32.         abs_head = os.path.abspath(head)
  33.         if _path_created.get(abs_head):
  34.             continue
  35.         
  36.         log.info('creating %s', head)
  37.         if not dry_run:
  38.             
  39.             try:
  40.                 os.mkdir(head)
  41.                 created_dirs.append(head)
  42.             except OSError:
  43.                 exc = None
  44.                 raise DistutilsFileError, "could not create '%s': %s" % (head, exc[-1])
  45.             except:
  46.                 None<EXCEPTION MATCH>OSError
  47.             
  48.  
  49.         None<EXCEPTION MATCH>OSError
  50.         _path_created[abs_head] = 1
  51.     
  52.     return created_dirs
  53.  
  54.  
  55. def create_tree(base_dir, files, mode = 511, verbose = 0, dry_run = 0):
  56.     need_dir = { }
  57.     for file in files:
  58.         need_dir[os.path.join(base_dir, os.path.dirname(file))] = 1
  59.     
  60.     need_dirs = need_dir.keys()
  61.     need_dirs.sort()
  62.     for dir in need_dirs:
  63.         mkpath(dir, mode, dry_run = dry_run)
  64.     
  65.  
  66.  
  67. def copy_tree(src, dst, preserve_mode = 1, preserve_times = 1, preserve_symlinks = 0, update = 0, verbose = 0, dry_run = 0):
  68.     copy_file = copy_file
  69.     import distutils.file_util
  70.     if not dry_run and not os.path.isdir(src):
  71.         raise DistutilsFileError, "cannot copy tree '%s': not a directory" % src
  72.     
  73.     
  74.     try:
  75.         names = os.listdir(src)
  76.     except os.error:
  77.         (errno, errstr) = None
  78.         if dry_run:
  79.             names = []
  80.         else:
  81.             raise DistutilsFileError, "error listing files in '%s': %s" % (src, errstr)
  82.     except:
  83.         dry_run
  84.  
  85.     if not dry_run:
  86.         mkpath(dst)
  87.     
  88.     outputs = []
  89.     for n in names:
  90.         src_name = os.path.join(src, n)
  91.         dst_name = os.path.join(dst, n)
  92.         if preserve_symlinks and os.path.islink(src_name):
  93.             link_dest = os.readlink(src_name)
  94.             log.info('linking %s -> %s', dst_name, link_dest)
  95.             if not dry_run:
  96.                 os.symlink(link_dest, dst_name)
  97.             
  98.             outputs.append(dst_name)
  99.             continue
  100.         if os.path.isdir(src_name):
  101.             outputs.extend(copy_tree(src_name, dst_name, preserve_mode, preserve_times, preserve_symlinks, update, dry_run = dry_run))
  102.             continue
  103.         copy_file(src_name, dst_name, preserve_mode, preserve_times, update, dry_run = dry_run)
  104.         outputs.append(dst_name)
  105.     
  106.     return outputs
  107.  
  108.  
  109. def _build_cmdtuple(path, cmdtuples):
  110.     for f in os.listdir(path):
  111.         real_f = os.path.join(path, f)
  112.         if os.path.isdir(real_f) and not os.path.islink(real_f):
  113.             _build_cmdtuple(real_f, cmdtuples)
  114.             continue
  115.         cmdtuples.append((os.remove, real_f))
  116.     
  117.     cmdtuples.append((os.rmdir, path))
  118.  
  119.  
  120. def remove_tree(directory, verbose = 0, dry_run = 0):
  121.     grok_environment_error = grok_environment_error
  122.     import distutils.util
  123.     log.info("removing '%s' (and everything under it)", directory)
  124.     if dry_run:
  125.         return None
  126.     
  127.     cmdtuples = []
  128.     _build_cmdtuple(directory, cmdtuples)
  129.     for cmd in cmdtuples:
  130.         
  131.         try:
  132.             apply(cmd[0], (cmd[1],))
  133.             abspath = os.path.abspath(cmd[1])
  134.             if _path_created.has_key(abspath):
  135.                 del _path_created[abspath]
  136.         continue
  137.         except (IOError, OSError):
  138.             exc = None
  139.             log.warn(grok_environment_error(exc, 'error removing %s: ' % directory))
  140.             continue
  141.         
  142.  
  143.     
  144.  
  145.  
  146. def ensure_relative(path):
  147.     (drive, path) = os.path.splitdrive(path)
  148.     if sys.platform == 'mac':
  149.         return os.sep + path
  150.     elif path[0:1] == os.sep:
  151.         path = drive + path[1:]
  152.     
  153.     return path
  154.  
  155.